{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Yelp Sentiment Analysis with doc2vec Document Vectors"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Imports & Settings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:57:53.085651Z",
     "start_time": "2020-06-21T14:57:53.083498Z"
    }
   },
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:57:53.517538Z",
     "start_time": "2020-06-21T14:57:53.086768Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[nltk_data] Downloading package stopwords to /home/stefan/nltk_data...\n",
      "[nltk_data]   Package stopwords is already up-to-date!\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import nltk\n",
    "nltk.download('stopwords')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:57:54.000662Z",
     "start_time": "2020-06-21T14:57:53.518570Z"
    }
   },
   "outputs": [],
   "source": [
    "from pathlib import Path\n",
    "import logging\n",
    "from random import shuffle\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "from gensim.models import Doc2Vec\n",
    "from gensim.models.doc2vec import TaggedDocument\n",
    "\n",
    "from nltk import RegexpTokenizer\n",
    "from nltk.corpus import stopwords\n",
    "\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.metrics import confusion_matrix, accuracy_score, roc_auc_score\n",
    "from sklearn.utils import class_weight\n",
    "\n",
    "import lightgbm as lgb\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Settings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:57:54.005819Z",
     "start_time": "2020-06-21T14:57:54.001544Z"
    }
   },
   "outputs": [],
   "source": [
    "sns.set_style('white')\n",
    "pd.set_option('display.expand_frame_repr', False)\n",
    "np.random.seed(42)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Paths"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:57:54.015784Z",
     "start_time": "2020-06-21T14:57:54.006719Z"
    }
   },
   "outputs": [],
   "source": [
    "data_path = Path('..', 'data', 'yelp')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:57:54.024062Z",
     "start_time": "2020-06-21T14:57:54.017142Z"
    }
   },
   "outputs": [],
   "source": [
    "results_path = Path('results', 'yelp')\n",
    "if not results_path.exists():\n",
    "    results_path.mkdir(parents=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Logging Config"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:57:54.032714Z",
     "start_time": "2020-06-21T14:57:54.025156Z"
    }
   },
   "outputs": [],
   "source": [
    "logging.basicConfig(\n",
    "        filename=results_path / 'doc2vec.log',\n",
    "        level=logging.DEBUG,\n",
    "        format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',\n",
    "        datefmt='%H:%M:%S')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load Data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Refer to download information [here](../data/create_yelp_review_data.ipynb).\n",
    "\n",
    "We'll create a smaller sample of 100,000 reviews per star rating."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:58:07.999024Z",
     "start_time": "2020-06-21T14:57:54.033764Z"
    }
   },
   "outputs": [],
   "source": [
    "df = pd.read_parquet(data_path / 'user_reviews.parquet').loc[:, ['stars', 'text']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:58:08.004494Z",
     "start_time": "2020-06-21T14:58:07.999975Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 8021122 entries, 0 to 8021121\n",
      "Data columns (total 2 columns):\n",
      " #   Column  Dtype  \n",
      "---  ------  -----  \n",
      " 0   stars   float64\n",
      " 1   text    object \n",
      "dtypes: float64(1), object(1)\n",
      "memory usage: 183.6+ MB\n"
     ]
    }
   ],
   "source": [
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:58:08.071396Z",
     "start_time": "2020-06-21T14:58:08.005568Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.0    3586460\n",
       "4.0    1673404\n",
       "1.0    1283897\n",
       "3.0     842289\n",
       "2.0     635072\n",
       "Name: stars, dtype: int64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.stars.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:58:08.073910Z",
     "start_time": "2020-06-21T14:58:08.072275Z"
    }
   },
   "outputs": [],
   "source": [
    "stars = range(1, 6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:58:09.169024Z",
     "start_time": "2020-06-21T14:58:08.074693Z"
    }
   },
   "outputs": [],
   "source": [
    "sample = pd.concat([df[df.stars == s].sample(n=100000) for s in stars])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:58:09.259018Z",
     "start_time": "2020-06-21T14:58:09.169965Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 500000 entries, 7812276 to 4618307\n",
      "Data columns (total 2 columns):\n",
      " #   Column  Non-Null Count   Dtype  \n",
      "---  ------  --------------   -----  \n",
      " 0   stars   500000 non-null  float64\n",
      " 1   text    500000 non-null  object \n",
      "dtypes: float64(1), object(1)\n",
      "memory usage: 11.4+ MB\n"
     ]
    }
   ],
   "source": [
    "sample.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:58:09.266305Z",
     "start_time": "2020-06-21T14:58:09.259909Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.0    100000\n",
       "5.0    100000\n",
       "4.0    100000\n",
       "2.0    100000\n",
       "1.0    100000\n",
       "Name: stars, dtype: int64"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample.stars.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:58:11.449997Z",
     "start_time": "2020-06-21T14:58:09.267180Z"
    }
   },
   "outputs": [],
   "source": [
    "sample.to_parquet(results_path / 'review_sample.parquet')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:58:12.439379Z",
     "start_time": "2020-06-21T14:58:11.450988Z"
    }
   },
   "outputs": [],
   "source": [
    "sample = pd.read_parquet(results_path / 'review_sample.parquet').reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:58:12.448022Z",
     "start_time": "2020-06-21T14:58:12.441587Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>stars</th>\n",
       "      <th>text</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>I  have worked with Peter at Green Arrow for a...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>Worst salon ever!!!! They make an appointment ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>could be happenin' if anybody showed up.  pitt...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>Yeah, so nothing has changed with their servic...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>I sent a parts request through their online em...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   stars                                               text\n",
       "0    1.0  I  have worked with Peter at Green Arrow for a...\n",
       "1    1.0  Worst salon ever!!!! They make an appointment ...\n",
       "2    1.0  could be happenin' if anybody showed up.  pitt...\n",
       "3    1.0  Yeah, so nothing has changed with their servic...\n",
       "4    1.0  I sent a parts request through their online em..."
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:58:19.364181Z",
     "start_time": "2020-06-21T14:58:12.449321Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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K1FVlTvuuIPvfve7EWz58CxatIilS5ei1+v7vaI7lvv41FNP8eGHH6KqKvfeey8TJ04cVX10OBwsWbKEpqYmPB4PN998MzNnzhw1fTx48CD33Xcf69evH3DHgf761dXVxYMPPkhTUxNxcXE888wzZGRkjEibNRH6QgghemhiekcIIUQPCX0hhNAQCX0hhNAQCX0hhNAQCX0hhNAQCX2hKU1NTTz00EMA3HrrrSeV/elPf2LRokXMnz+fgoICFi1axKJFizh69Og3Xuf555/ntddeG4kmCxFSsX1ZqhBD9OmnnzJz5kycTidms/mksuuuu47rrrsusPa6oqIiQq0UInwk9IVm3HPPPXzyySeMHz+e3//+93i9Xt544w2uvPLK09Zbu3Ytr7/+OkajkdmzZ3P//fcHyhobG7nvvvtYsWIFEyZM4OGHH6a1tRWARx55hBkzZnDFFVdQUFDAvn37SE9P5/nnn+err77ioYcewmg0YjAYeOqpp8jKygpr/4UACX2hIc899xw/+tGP+I//+A9+/etfc8kllzB79uzT1tm1axebNm0K7Id+991387//+78A7Nu3jz/84Q8888wzTJ48maeffppLLrmEG2+8kf379/PQQw/x2muvceDAAX7729+SnZ3NggUL+Oyzz9ixYwfnnnsu5eXl1NTU0N7eLqEvRoSEvtCMu+++m+3bt3Pbbbexe/du3n//fW6++ebTjvS//PJLLrjgAuLi4gCYPXs2e/bsAXr2TPGP1AF2797NBx98wKZNmwDo6OgAIDU1lezsbACys7NxuVzccMMNvPTSS9x+++1YrVbuvffesPVbiL7kRK7QjB//+MfMnz8/sInb73//+6BTO1OnTmX79u14vV5UVeXjjz9mypQpANxyyy0sWbKEBx54AJ/Px9SpU7n11lupqKjgl7/8Jddeey1AYLvdvt5++20KCwv57W9/y5VXXslvfvOb0HdYiH5I6AvN2LFjB+eccw4HDx5k0qRJg6ozY8YMrrrqKhYuXMgNN9zAhAkT+M53vhMov+yyy5g+fTovvfQSd955J5s2bWLRokXcfvvtTJ8+fcDXnTlzJr/85S+58cYbWbduHTfddNMZ90+IwZAN14QQQkNkpC+EEBoioS+EEBoioS+EEBoioS+EEBoioS+EEBoioS+EEBoioS+EEBoioS+EEBry/wF3LQc5IlZ7RgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = sns.distplot(sample.text.str.split().str.len())\n",
    "ax.set_xlabel('# Tokens')\n",
    "sns.despine();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Doc2Vec"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Basic text cleaning"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:58:19.368593Z",
     "start_time": "2020-06-21T14:58:19.365212Z"
    }
   },
   "outputs": [],
   "source": [
    "tokenizer = RegexpTokenizer(r'\\w+')\n",
    "stopword_set = set(stopwords.words('english'))\n",
    "\n",
    "def clean(review):\n",
    "    tokens = tokenizer.tokenize(review)\n",
    "    return ' '.join([t for t in tokens if t not in stopword_set])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:58:35.289430Z",
     "start_time": "2020-06-21T14:58:19.369470Z"
    }
   },
   "outputs": [],
   "source": [
    "sample.text = sample.text.str.lower().apply(clean)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:58:35.313272Z",
     "start_time": "2020-06-21T14:58:35.290328Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>stars</th>\n",
       "      <th>text</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>106676</th>\n",
       "      <td>2.0</td>\n",
       "      <td>ordered guinea pig pizza read great reviews ca...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>388751</th>\n",
       "      <td>4.0</td>\n",
       "      <td>great stop us way highpoint hubby craving shri...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>235104</th>\n",
       "      <td>3.0</td>\n",
       "      <td>read roger review waiting show start thought h...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>422459</th>\n",
       "      <td>5.0</td>\n",
       "      <td>finally broke tried ocp past weekend found cli...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>366460</th>\n",
       "      <td>4.0</td>\n",
       "      <td>mary neill couple times drinks apps apps prett...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>84223</th>\n",
       "      <td>1.0</td>\n",
       "      <td>going honest came dominoes temporarily closed ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>190363</th>\n",
       "      <td>2.0</td>\n",
       "      <td>tell much wanted like place counting days open...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>282482</th>\n",
       "      <td>3.0</td>\n",
       "      <td>three stars may seem little harsh one sandwich...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>388041</th>\n",
       "      <td>4.0</td>\n",
       "      <td>family goes breakfast brunch weekends great li...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>136831</th>\n",
       "      <td>2.0</td>\n",
       "      <td>gone twice food amazing however staff much car...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        stars                                               text\n",
       "106676    2.0  ordered guinea pig pizza read great reviews ca...\n",
       "388751    4.0  great stop us way highpoint hubby craving shri...\n",
       "235104    3.0  read roger review waiting show start thought h...\n",
       "422459    5.0  finally broke tried ocp past weekend found cli...\n",
       "366460    4.0  mary neill couple times drinks apps apps prett...\n",
       "84223     1.0  going honest came dominoes temporarily closed ...\n",
       "190363    2.0  tell much wanted like place counting days open...\n",
       "282482    3.0  three stars may seem little harsh one sandwich...\n",
       "388041    4.0  family goes breakfast brunch weekends great li...\n",
       "136831    2.0  gone twice food amazing however staff much car..."
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample.sample(n=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:58:38.692302Z",
     "start_time": "2020-06-21T14:58:35.314157Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 485725 entries, 0 to 499999\n",
      "Data columns (total 2 columns):\n",
      " #   Column  Non-Null Count   Dtype  \n",
      "---  ------  --------------   -----  \n",
      " 0   stars   485725 non-null  float64\n",
      " 1   text    485725 non-null  object \n",
      "dtypes: float64(1), object(1)\n",
      "memory usage: 11.1+ MB\n"
     ]
    }
   ],
   "source": [
    "sample = sample[sample.text.str.split().str.len()>10]\n",
    "sample.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Create sentence stream"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T14:58:43.799150Z",
     "start_time": "2020-06-21T14:58:38.693275Z"
    }
   },
   "outputs": [],
   "source": [
    "sentences = []\n",
    "for i, (_, text) in enumerate(sample.values):\n",
    "    sentences.append(TaggedDocument(words=text.split(), tags=[i]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Formulate the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T15:06:02.413402Z",
     "start_time": "2020-06-21T14:58:43.800282Z"
    }
   },
   "outputs": [],
   "source": [
    "model = Doc2Vec(documents=sentences,\n",
    "                dm=1,           # 1=distributed memory, 0=dist.BOW\n",
    "                epochs=5,\n",
    "                size=300,       # vector size\n",
    "                window=5,       # max. distance betw. target and context\n",
    "                min_count=50,   # ignore tokens w. lower frequency\n",
    "                negative=5,     # negative training samples\n",
    "                dm_concat=0,    # 1=concatenate vectors, 0=sum\n",
    "                dbow_words=0,   # 1=train word vectors as well\n",
    "                workers=4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T15:06:02.476540Z",
     "start_time": "2020-06-21T15:06:02.414829Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>token</th>\n",
       "      <th>similarity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>great</td>\n",
       "      <td>0.757694</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>decent</td>\n",
       "      <td>0.746465</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>awesome</td>\n",
       "      <td>0.622731</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>amazing</td>\n",
       "      <td>0.611350</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>bad</td>\n",
       "      <td>0.605432</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>yummy</td>\n",
       "      <td>0.600379</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>ok</td>\n",
       "      <td>0.600137</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>tasty</td>\n",
       "      <td>0.596531</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>excellent</td>\n",
       "      <td>0.594958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>okay</td>\n",
       "      <td>0.592447</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       token  similarity\n",
       "0      great    0.757694\n",
       "1     decent    0.746465\n",
       "2    awesome    0.622731\n",
       "3    amazing    0.611350\n",
       "4        bad    0.605432\n",
       "5      yummy    0.600379\n",
       "6         ok    0.600137\n",
       "7      tasty    0.596531\n",
       "8  excellent    0.594958\n",
       "9       okay    0.592447"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame(model.most_similar('good'), columns=['token', 'similarity'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Continue training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T15:11:40.602744Z",
     "start_time": "2020-06-21T15:06:02.478442Z"
    }
   },
   "outputs": [],
   "source": [
    "model.train(sentences, total_examples=model.corpus_count, epochs=model.epochs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T15:11:40.638403Z",
     "start_time": "2020-06-21T15:11:40.604303Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>token</th>\n",
       "      <th>similarity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>great</td>\n",
       "      <td>0.745322</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>decent</td>\n",
       "      <td>0.712028</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>awesome</td>\n",
       "      <td>0.618959</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>amazing</td>\n",
       "      <td>0.608737</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>excellent</td>\n",
       "      <td>0.605081</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>fantastic</td>\n",
       "      <td>0.577577</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>yummy</td>\n",
       "      <td>0.569521</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>tasty</td>\n",
       "      <td>0.555287</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>bad</td>\n",
       "      <td>0.543677</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>delicious</td>\n",
       "      <td>0.539020</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       token  similarity\n",
       "0      great    0.745322\n",
       "1     decent    0.712028\n",
       "2    awesome    0.618959\n",
       "3    amazing    0.608737\n",
       "4  excellent    0.605081\n",
       "5  fantastic    0.577577\n",
       "6      yummy    0.569521\n",
       "7      tasty    0.555287\n",
       "8        bad    0.543677\n",
       "9  delicious    0.539020"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "most_similar = pd.DataFrame(model.most_similar('good'), columns=['token', 'similarity'])\n",
    "most_similar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T15:11:48.127809Z",
     "start_time": "2020-06-21T15:11:40.640050Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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ixcvZs6cOSxcuJCXX37ZVX25JueycknPsV32eZCfN8EBviUai4iIuEd2djavvfYaZ86coWrVqmzatIk6depQrlw50tLSWLBgAePHjycxMRGHw8HQoUO56667+P7771m6dKmznVmzZhEXF8e5c+cYP34848ePd1+nRESkVCh0BMtisZCZmel873A48Pb2vmJZZmZmvoTrUiEhIURERAAQERGRbzSspKTn2Fi3/6/L/rtS0iUiIremuLg4atSowaeffsqLL75IcnIyAN26dWPx4sUsX76ccuXKsXTpUubOncuECRMAOHr0KAsWLCA2NpY6derw888/89xzzxEcHKzkSkREgGtIsFq0aMG6desA2LZtGw0aNHCWhYeHk5iYSGpqKrm5uSQkJNC8efMC22rZsiVr164FYNOmTdSrV+9G478h/2/3aY6dzXJrDCIiUvIOHTpEixYtgLxnWfny5QGoU6cOAPv372fdunUMHDiQf/zjH9hsNlJSUqhQoQIjRoxg1KhR7Nu3D5tNv5wTEZH8Cp0i2KlTJ9avX09UVBSGYTBlyhTi4+PJysoiMjKSkSNHMmjQIAzDoFevXlSuXLnAtkaMGMGYMWP49NNPsVgszJgxw6WdKQqHYfDjvjPsP53O8/eHuy0OEREpeQ0aNGDr1q107NiRY8eOkZKSAoDJZAKgbt26VKlShSFDhpCdnc28efPw9vbm3XffZc2aNQA89dRTGIYB4Py/iIhIoQmWl5eXc2rEBeHh/01IIiIinNP+LlWjRo18W7dXr16djz766HpjdSm7I+9heCL1PIf/yuS+hhXdHJGIiJSU3r17M3LkSB577DGqVauGn59fvvKoqCjGjBnDgAEDyMjIoH///lgsFlq0aEHPnj0JCAigbNmynDlzBsh7Lg4fPpzp06e7ozsiIlKKeOxBwxcSLICfDiTxVJva7gtGRERK1O7du+nduzdt27bl6NGjbN26ldjYWGe5r68v06ZNu6zerFmzrtjexXVFRMSzeWyCZftPghUS4MP+0xkcPJNBjXIBbo5KRERKQs2aNRk2bBhz5szBZrPx+uuvl8h9m1QPZkVM1xK5l4hIUWVb7fj7mN0dxk3PcxMsuwOAu+tUYPXeM3zy2zHub1jJzVGJiEhJqFixokadREQuoeTKNQrdRfBWdWGKYJC/N3fWLsfK3Wc4m5nr5qhERERE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chATFkjNsEDsBU62HDzJ7qxc6kYF07xuJLUjgqr8+ywiIlJRyi2wNmzY4LmZY8uWLdm6datn3969e4mLiyMiIgKANm3asH79etLT00tts23bNtq1awcU36Bx9erVl7XAur9zAx7umkDdKF17VdmYTCYCrRZqhlmoGRZ0VvF1pt8/7nIbOF1uWtaLwHn6l9DC0wVZgcNFodONw+kiv8hNgdN1VsHmcLo4VbLtcGFQXBCazeB0uckvcpNf6DxdBJjIyilgU4GTvEInNosZm9WMy21gL3RSWMppkHJ5lVqcnfOcP1DolfbMC3vogl/v989zGwaFTjen72vrKWwLHGf/fAVazef8zAVYTOf8wcFkwvNaZ+rSOIa37mtXSnIRERG5WOUWWHa7ndDQUM+2xWLB6XRitVqx2+2EhYV59oWEhGC328tsYxiG5xeckJAQcnNzz/u9Dx48yN13333RnboUqZewrzK28fb3v1JtPjrPa12MojO+NgO2M7YjTv8TqexydsPdf/B/mqioKP79739XTCA/diWPayIicmn+6DGt3AIrNDSUvLw8z7bb7cZqtZa6Ly8vj7CwsDLbnHm9VV5enudmjWVZt27dhfdERETEx+m4JiLi/8q9MKl169akpaUBkJ6eTqNGvy0WkZCQQGZmJidOnKCoqIj169fTqlWrMts0bdrUc3BJS0ujbdu2Fd4hERERERERbzEZRmln5P+mZEXA3bt3YxgG06ZNY/v27eTn59O/f3/PKoKGYdC7d2/uvffeUtskJCSwb98+Jk2ahMPhID4+nqlTp2Kx6L4aIiIiIiLiH8otsEREREREROTCaO1yERERERGRCqICS0REREREpIKowBIREREREakg5S7TXhmVLLKxa9cubDYbU6dOpX79+t6O5bFp0yZmz55NSkoKmZmZjB07FpPJRGJiIs888wxms5mlS5eyePFirFYrDz30EF27dr3iOR0OB+PHj+fgwYMUFRXx0EMP0bBhQ5/N63K5mDhxIvv27cNisTB9+nQMw/DZvAC//vord999N2+88QZWq9Wns951112e+97VrVuXESNG+HTeV199lVWrVuFwOEhKSqJdu3Y+m3fZsmUsX74cgMLCQnbs2MHbb7/NtGnTfDKvnKu8486bb75Jamoq0dHRADz77LNcffXVPn2sKs+l9Dk+Pv6cz5Lp06d7Jf/F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\n",
      "text/plain": [
       "<Figure size 864x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes =plt.subplots(ncols=2, figsize=(12, 4))\n",
    "sns.distplot(sample.text.str.split().str.len(), ax=axes[0])\n",
    "axes[0].set_title('# Tokens per Review')\n",
    "\n",
    "most_similar.set_index('token').similarity.sort_values().plot.barh(ax=axes[1], \n",
    "                                                                   title=\"Terms Most Similar to 'good'\",\n",
    "                                                                  xlim=(.5, .8))\n",
    "axes[1].set_xlabel('Similarity')\n",
    "axes[1].set_ylabel('Token')\n",
    "axes[0].set_xlabel('# Tokens')\n",
    "\n",
    "sns.despine()\n",
    "fig.tight_layout()\n",
    "fig.savefig(results_path / 'doc2vec_stats', dpi=300)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Persist Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T15:11:49.241581Z",
     "start_time": "2020-06-21T15:11:48.129574Z"
    }
   },
   "outputs": [],
   "source": [
    "model.save((results_path / 'sample.model').as_posix())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T15:11:49.925621Z",
     "start_time": "2020-06-21T15:11:49.243068Z"
    }
   },
   "outputs": [],
   "source": [
    "model = Doc2Vec.load((results_path / 'sample.model').as_posix())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Evaluate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T15:11:49.947446Z",
     "start_time": "2020-06-21T15:11:49.927138Z"
    }
   },
   "outputs": [],
   "source": [
    "y = sample.stars.sub(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T15:11:51.091835Z",
     "start_time": "2020-06-21T15:11:49.950798Z"
    }
   },
   "outputs": [],
   "source": [
    "size = 300\n",
    "X = np.zeros(shape=(len(y), size))\n",
    "for i in range(len(sample)):\n",
    "    X[i] = model.docvecs[i]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T15:11:51.097386Z",
     "start_time": "2020-06-21T15:11:51.093053Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(485725, 300)"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Train-Test Split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T15:11:51.554548Z",
     "start_time": "2020-06-21T15:11:51.099169Z"
    }
   },
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y, \n",
    "                                                    test_size=0.2, \n",
    "                                                    random_state=42, \n",
    "                                                    stratify=y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T15:11:51.569283Z",
     "start_time": "2020-06-21T15:11:51.555845Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Baseline Score: 20.15%\n"
     ]
    }
   ],
   "source": [
    "mode = pd.Series(y_train).mode().iloc[0]\n",
    "baseline = accuracy_score(y_true=y_test, y_pred=np.full_like(y_test, fill_value=mode))\n",
    "print(f'Baseline Score: {baseline:.2%}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T15:11:51.635535Z",
     "start_time": "2020-06-21T15:11:51.570442Z"
    }
   },
   "outputs": [],
   "source": [
    "class_weights = class_weight.compute_class_weight('balanced',\n",
    "                                                 np.unique(y_train),\n",
    "                                                 y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T15:11:51.639739Z",
     "start_time": "2020-06-21T15:11:51.636692Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.99618017, 0.9923514 , 0.99524889, 1.00219225, 1.01433084])"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "class_weights"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## LightGBM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T15:11:51.647546Z",
     "start_time": "2020-06-21T15:11:51.640920Z"
    }
   },
   "outputs": [],
   "source": [
    "train_data = lgb.Dataset(data=X_train, label=y_train)\n",
    "test_data = train_data.create_valid(X_test, label=y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T15:11:51.658669Z",
     "start_time": "2020-06-21T15:11:51.648961Z"
    }
   },
   "outputs": [],
   "source": [
    "params = {'objective': 'multiclass',\n",
    "          'num_classes': 5}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T16:17:49.244232Z",
     "start_time": "2020-06-21T15:11:51.660259Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training until validation scores don't improve for 25 rounds\n",
      "[50]\ttraining's multi_logloss: 1.44166\tvalid_1's multi_logloss: 1.45977\n",
      "[100]\ttraining's multi_logloss: 1.38412\tvalid_1's multi_logloss: 1.41755\n",
      "[150]\ttraining's multi_logloss: 1.3404\tvalid_1's multi_logloss: 1.38813\n",
      "[200]\ttraining's multi_logloss: 1.30368\tvalid_1's multi_logloss: 1.36524\n",
      "[250]\ttraining's multi_logloss: 1.272\tvalid_1's multi_logloss: 1.34701\n",
      "[300]\ttraining's multi_logloss: 1.24457\tvalid_1's multi_logloss: 1.33252\n",
      "[350]\ttraining's multi_logloss: 1.22035\tvalid_1's multi_logloss: 1.32092\n",
      "[400]\ttraining's multi_logloss: 1.1986\tvalid_1's multi_logloss: 1.31161\n",
      "[450]\ttraining's multi_logloss: 1.17894\tvalid_1's multi_logloss: 1.30414\n",
      "[500]\ttraining's multi_logloss: 1.16084\tvalid_1's multi_logloss: 1.29773\n",
      "[550]\ttraining's multi_logloss: 1.14419\tvalid_1's multi_logloss: 1.29242\n",
      "[600]\ttraining's multi_logloss: 1.1284\tvalid_1's multi_logloss: 1.28762\n",
      "[650]\ttraining's multi_logloss: 1.11312\tvalid_1's multi_logloss: 1.28313\n",
      "[700]\ttraining's multi_logloss: 1.09771\tvalid_1's multi_logloss: 1.27818\n",
      "[750]\ttraining's multi_logloss: 1.08344\tvalid_1's multi_logloss: 1.27396\n",
      "[800]\ttraining's multi_logloss: 1.06931\tvalid_1's multi_logloss: 1.26982\n",
      "[850]\ttraining's multi_logloss: 1.05587\tvalid_1's multi_logloss: 1.26615\n",
      "[900]\ttraining's multi_logloss: 1.0426\tvalid_1's multi_logloss: 1.26248\n",
      "[950]\ttraining's multi_logloss: 1.02926\tvalid_1's multi_logloss: 1.25856\n",
      "[1000]\ttraining's multi_logloss: 1.01651\tvalid_1's multi_logloss: 1.25499\n",
      "[1050]\ttraining's multi_logloss: 1.00401\tvalid_1's multi_logloss: 1.25151\n",
      "[1100]\ttraining's multi_logloss: 0.991996\tvalid_1's multi_logloss: 1.24837\n",
      "[1150]\ttraining's multi_logloss: 0.980094\tvalid_1's multi_logloss: 1.24507\n",
      "[1200]\ttraining's multi_logloss: 0.968459\tvalid_1's multi_logloss: 1.2419\n",
      "[1250]\ttraining's multi_logloss: 0.956903\tvalid_1's multi_logloss: 1.23866\n",
      "[1300]\ttraining's multi_logloss: 0.945488\tvalid_1's multi_logloss: 1.23559\n",
      "[1350]\ttraining's multi_logloss: 0.934443\tvalid_1's multi_logloss: 1.23264\n",
      "[1400]\ttraining's multi_logloss: 0.923515\tvalid_1's multi_logloss: 1.22982\n",
      "[1450]\ttraining's multi_logloss: 0.91273\tvalid_1's multi_logloss: 1.22701\n",
      "[1500]\ttraining's multi_logloss: 0.902185\tvalid_1's multi_logloss: 1.2242\n",
      "[1550]\ttraining's multi_logloss: 0.891922\tvalid_1's multi_logloss: 1.22155\n",
      "[1600]\ttraining's multi_logloss: 0.881297\tvalid_1's multi_logloss: 1.21854\n",
      "[1650]\ttraining's multi_logloss: 0.871119\tvalid_1's multi_logloss: 1.21585\n",
      "[1700]\ttraining's multi_logloss: 0.861338\tvalid_1's multi_logloss: 1.2134\n",
      "[1750]\ttraining's multi_logloss: 0.851694\tvalid_1's multi_logloss: 1.21102\n",
      "[1800]\ttraining's multi_logloss: 0.842194\tvalid_1's multi_logloss: 1.20858\n",
      "[1850]\ttraining's multi_logloss: 0.832426\tvalid_1's multi_logloss: 1.20597\n",
      "[1900]\ttraining's multi_logloss: 0.822651\tvalid_1's multi_logloss: 1.20326\n",
      "[1950]\ttraining's multi_logloss: 0.813483\tvalid_1's multi_logloss: 1.20088\n",
      "[2000]\ttraining's multi_logloss: 0.804723\tvalid_1's multi_logloss: 1.19878\n",
      "[2050]\ttraining's multi_logloss: 0.795233\tvalid_1's multi_logloss: 1.19622\n",
      "[2100]\ttraining's multi_logloss: 0.786525\tvalid_1's multi_logloss: 1.19402\n",
      "[2150]\ttraining's multi_logloss: 0.77798\tvalid_1's multi_logloss: 1.19201\n",
      "[2200]\ttraining's multi_logloss: 0.769765\tvalid_1's multi_logloss: 1.19002\n",
      "[2250]\ttraining's multi_logloss: 0.761259\tvalid_1's multi_logloss: 1.18796\n",
      "[2300]\ttraining's multi_logloss: 0.753083\tvalid_1's multi_logloss: 1.18612\n",
      "[2350]\ttraining's multi_logloss: 0.744692\tvalid_1's multi_logloss: 1.18399\n",
      "[2400]\ttraining's multi_logloss: 0.736341\tvalid_1's multi_logloss: 1.18183\n",
      "[2450]\ttraining's multi_logloss: 0.728198\tvalid_1's multi_logloss: 1.17986\n",
      "[2500]\ttraining's multi_logloss: 0.720343\tvalid_1's multi_logloss: 1.17794\n",
      "[2550]\ttraining's multi_logloss: 0.712334\tvalid_1's multi_logloss: 1.17588\n",
      "[2600]\ttraining's multi_logloss: 0.704237\tvalid_1's multi_logloss: 1.17371\n",
      "[2650]\ttraining's multi_logloss: 0.696492\tvalid_1's multi_logloss: 1.1719\n",
      "[2700]\ttraining's multi_logloss: 0.688707\tvalid_1's multi_logloss: 1.16979\n",
      "[2750]\ttraining's multi_logloss: 0.681284\tvalid_1's multi_logloss: 1.16797\n",
      "[2800]\ttraining's multi_logloss: 0.673507\tvalid_1's multi_logloss: 1.16587\n",
      "[2850]\ttraining's multi_logloss: 0.666472\tvalid_1's multi_logloss: 1.16426\n",
      "[2900]\ttraining's multi_logloss: 0.658977\tvalid_1's multi_logloss: 1.16235\n",
      "[2950]\ttraining's multi_logloss: 0.6515\tvalid_1's multi_logloss: 1.16047\n",
      "[3000]\ttraining's multi_logloss: 0.644463\tvalid_1's multi_logloss: 1.15874\n",
      "[3050]\ttraining's multi_logloss: 0.637526\tvalid_1's multi_logloss: 1.15713\n",
      "[3100]\ttraining's multi_logloss: 0.630485\tvalid_1's multi_logloss: 1.15538\n",
      "[3150]\ttraining's multi_logloss: 0.623511\tvalid_1's multi_logloss: 1.15352\n",
      "[3200]\ttraining's multi_logloss: 0.616588\tvalid_1's multi_logloss: 1.15168\n",
      "[3250]\ttraining's multi_logloss: 0.609799\tvalid_1's multi_logloss: 1.14997\n",
      "[3300]\ttraining's multi_logloss: 0.603035\tvalid_1's multi_logloss: 1.14819\n",
      "[3350]\ttraining's multi_logloss: 0.5965\tvalid_1's multi_logloss: 1.14651\n",
      "[3400]\ttraining's multi_logloss: 0.589903\tvalid_1's multi_logloss: 1.14495\n",
      "[3450]\ttraining's multi_logloss: 0.583236\tvalid_1's multi_logloss: 1.14322\n",
      "[3500]\ttraining's multi_logloss: 0.576622\tvalid_1's multi_logloss: 1.14159\n",
      "[3550]\ttraining's multi_logloss: 0.570311\tvalid_1's multi_logloss: 1.14016\n",
      "[3600]\ttraining's multi_logloss: 0.564048\tvalid_1's multi_logloss: 1.13847\n",
      "[3650]\ttraining's multi_logloss: 0.557675\tvalid_1's multi_logloss: 1.13685\n",
      "[3700]\ttraining's multi_logloss: 0.551757\tvalid_1's multi_logloss: 1.13547\n",
      "[3750]\ttraining's multi_logloss: 0.545784\tvalid_1's multi_logloss: 1.13408\n",
      "[3800]\ttraining's multi_logloss: 0.539929\tvalid_1's multi_logloss: 1.13269\n",
      "[3850]\ttraining's multi_logloss: 0.534238\tvalid_1's multi_logloss: 1.13129\n",
      "[3900]\ttraining's multi_logloss: 0.528451\tvalid_1's multi_logloss: 1.12995\n",
      "[3950]\ttraining's multi_logloss: 0.522741\tvalid_1's multi_logloss: 1.12865\n",
      "[4000]\ttraining's multi_logloss: 0.517369\tvalid_1's multi_logloss: 1.12746\n",
      "[4050]\ttraining's multi_logloss: 0.511513\tvalid_1's multi_logloss: 1.12589\n",
      "[4100]\ttraining's multi_logloss: 0.505852\tvalid_1's multi_logloss: 1.12452\n",
      "[4150]\ttraining's multi_logloss: 0.50013\tvalid_1's multi_logloss: 1.12302\n",
      "[4200]\ttraining's multi_logloss: 0.494568\tvalid_1's multi_logloss: 1.1216\n",
      "[4250]\ttraining's multi_logloss: 0.488841\tvalid_1's multi_logloss: 1.12011\n",
      "[4300]\ttraining's multi_logloss: 0.483695\tvalid_1's multi_logloss: 1.11896\n",
      "[4350]\ttraining's multi_logloss: 0.478507\tvalid_1's multi_logloss: 1.11775\n",
      "[4400]\ttraining's multi_logloss: 0.473078\tvalid_1's multi_logloss: 1.11634\n",
      "[4450]\ttraining's multi_logloss: 0.467839\tvalid_1's multi_logloss: 1.11507\n",
      "[4500]\ttraining's multi_logloss: 0.462725\tvalid_1's multi_logloss: 1.11397\n",
      "[4550]\ttraining's multi_logloss: 0.45761\tvalid_1's multi_logloss: 1.11264\n",
      "[4600]\ttraining's multi_logloss: 0.452837\tvalid_1's multi_logloss: 1.11158\n",
      "[4650]\ttraining's multi_logloss: 0.447713\tvalid_1's multi_logloss: 1.11034\n",
      "[4700]\ttraining's multi_logloss: 0.442784\tvalid_1's multi_logloss: 1.10909\n",
      "[4750]\ttraining's multi_logloss: 0.438093\tvalid_1's multi_logloss: 1.10796\n",
      "[4800]\ttraining's multi_logloss: 0.433102\tvalid_1's multi_logloss: 1.10669\n",
      "[4850]\ttraining's multi_logloss: 0.428328\tvalid_1's multi_logloss: 1.10542\n",
      "[4900]\ttraining's multi_logloss: 0.423541\tvalid_1's multi_logloss: 1.1041\n",
      "[4950]\ttraining's multi_logloss: 0.41876\tvalid_1's multi_logloss: 1.10292\n",
      "[5000]\ttraining's multi_logloss: 0.414335\tvalid_1's multi_logloss: 1.1019\n",
      "Did not meet early stopping. Best iteration is:\n",
      "[5000]\ttraining's multi_logloss: 0.414335\tvalid_1's multi_logloss: 1.1019\n"
     ]
    }
   ],
   "source": [
    "lgb_model = lgb.train(params=params,\n",
    "                      train_set=train_data,\n",
    "                      num_boost_round=5000,\n",
    "                      valid_sets=[train_data, test_data],\n",
    "                      early_stopping_rounds=25,\n",
    "                      verbose_eval=50)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T16:18:30.593471Z",
     "start_time": "2020-06-21T16:17:49.245185Z"
    }
   },
   "outputs": [],
   "source": [
    "lgb_pred = np.argmax(lgb_model.predict(X_test), axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T16:18:30.600302Z",
     "start_time": "2020-06-21T16:18:30.594272Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy: 55.01%\n"
     ]
    }
   ],
   "source": [
    "lgb_acc = accuracy_score(y_true=y_test, y_pred=lgb_pred)\n",
    "print(f'Accuracy: {lgb_acc:.2%}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Random Forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T16:43:11.332188Z",
     "start_time": "2020-06-21T16:28:53.665145Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 8 concurrent workers.\n",
      "[Parallel(n_jobs=-1)]: Done  34 tasks      | elapsed:  1.1min\n",
      "[Parallel(n_jobs=-1)]: Done 184 tasks      | elapsed:  5.3min\n",
      "[Parallel(n_jobs=-1)]: Done 434 tasks      | elapsed: 12.5min\n",
      "[Parallel(n_jobs=-1)]: Done 500 out of 500 | elapsed: 14.3min finished\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "RandomForestClassifier(class_weight='balanced_subsample', n_estimators=500,\n",
       "                       n_jobs=-1, verbose=1)"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rf = RandomForestClassifier(n_jobs=-1,  \n",
    "                            n_estimators=500,\n",
    "                            verbose=1,\n",
    "                            class_weight='balanced_subsample')\n",
    "rf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T16:43:18.604718Z",
     "start_time": "2020-06-21T16:43:11.333554Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=8)]: Using backend ThreadingBackend with 8 concurrent workers.\n",
      "[Parallel(n_jobs=8)]: Done  34 tasks      | elapsed:    0.6s\n",
      "[Parallel(n_jobs=8)]: Done 184 tasks      | elapsed:    2.7s\n",
      "[Parallel(n_jobs=8)]: Done 434 tasks      | elapsed:    6.2s\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy: 37.37%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=8)]: Done 500 out of 500 | elapsed:    7.1s finished\n"
     ]
    }
   ],
   "source": [
    "rf_pred = rf.predict(X_test)\n",
    "rf_acc = accuracy_score(y_true=y_test, y_pred=rf_pred)\n",
    "print(f'Accuracy: {rf_acc:.2%}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T16:43:18.940215Z",
     "start_time": "2020-06-21T16:43:18.607478Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cm = confusion_matrix(y_true=y_test, y_pred=rf_pred)\n",
    "sns.heatmap(pd.DataFrame(cm/np.sum(cm), \n",
    "                         index=stars, \n",
    "                         columns=stars), \n",
    "            annot=True, \n",
    "            cmap='Blues', \n",
    "            fmt='.1%');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Multinomial Logistic Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T16:43:47.898636Z",
     "start_time": "2020-06-21T16:43:27.073467Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression(class_weight='balanced', multi_class='multinomial')"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr = LogisticRegression(multi_class='multinomial', \n",
    "                        solver='lbfgs', \n",
    "                        class_weight='balanced')\n",
    "lr.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T16:43:47.943467Z",
     "start_time": "2020-06-21T16:43:47.899779Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy: 33.72%\n"
     ]
    }
   ],
   "source": [
    "lr_pred = lr.predict(X_test)\n",
    "lr_acc = accuracy_score(y_true=y_test, y_pred=lr_pred)\n",
    "print(f'Accuracy: {lr_acc:.2%}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T16:43:48.143005Z",
     "start_time": "2020-06-21T16:43:47.944521Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cm = confusion_matrix(y_true=y_test, y_pred=lr_pred)\n",
    "sns.heatmap(pd.DataFrame(cm/np.sum(cm), \n",
    "                         index=stars, \n",
    "                         columns=stars), \n",
    "            annot=True, \n",
    "            cmap='Blues', \n",
    "            fmt='.1%');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Comparison"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-21T16:43:54.180892Z",
     "start_time": "2020-06-21T16:43:53.239808Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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1G3WhtkO3jdKvdyILyNns2vWMDAYqNFpABdOfE5qkgm/mk0xOrmwffoAnFxcKV+vNe7eeTL3PbNjNRUaW19iWqb2a+z7aBxePvnxKex4M7b+qXUrFhN/+zafRIbxSaS1ANTotdaYzSYat2iDs4sLQ3p1xNXVlZaBweTOkzWmXRsZRttOIQA0bdmWicPf4skCBXm6VJl7/i57t2ZZGPG341i1ZBGrliwCoMnr/phNJpq1DKBLz36M6N8dFxcXKr1Yjao1amXuu2ppKEGdewDQvHUgY4b0Jr9vIUqWdtwxbfVa9fjovQmMGdCdtLRUur41hGOf78NkMtGouT9d+gxm8oi+WNLTqde0JU/kL5C577rlYbTJ6BuNWwYweXhfnvR13L5xL4/zWO6p3G5cj8+aMVGzhA/uLsYc78O4W5uKBdlw2jrG3/Xj74xpWJobCclciLHNGN9gsVgeyFs4NmzYwIYNG1i+/J89K9SqtT8r16x/ECE5nDhzqq1DsBs/XI377xs9JuYePm/rEOxG31eetnUIdqVeub93VwGgZWt/lq18PJ4V/2++vXTL1iHYDVcb3U2xR0mp6bYOwW7sv2BfL2W3tbENSv/tbZu1aMWshSseYDSOwc0l559rfJwlJmuM/4ffbjveY8YPyvyjF2wdgl1Z26XKPZff1xkYd/L398ff3/9B/XgREREREREReYzoVouIiIiIiIiI2D0VMERERERERETE7qmAISIiIiIiIiJ2TwUMEREREREREbF7KmCIiIiIiIiIiN1TAUNERERERERE7J4KGCIiIiIiIiJi91TAEBERERERERG7pwKGiIiIiIiIiNg9FTBERERERERExO6pgCEiIiIiIiIidk8FDBERERERERGxeypgiIiIiIiIiIjdUwFDREREREREROyeChgiIiIiIiIiYvdUwBARERERERERu6cChoiIiIiIiIjYPRUwRERERERERMTuqYAhIiIiIiIiInZPBQwRERERERERsXsqYIiIiIiIiIiI3VMBQ0RERERERETsngoYIiIiIiIiImL3VMAQEREREREREbvnbOsA7mYBktPSbR2GXcjr6WLrEOzGC8V9bB2C3Rjv4WrrEOxG9a5zbR2CXTHtHf23tzUARsODi8WRVHla+eUPaekWW4dgN67eNNs6BLsxZdgHtg7Broz95qO/va2T0UBeL43nfLw0drlTir7rZEpXU2TaOmexrUOwL12q3HOxZmCIiIiIiIiIiN1TAUNERERERERE7J4KGCIiIiIiIiJi91TAEBERERERERG7pwKGiIiIiIiIiNg9FTBERERERERExO6pgCEiIiIiIiIidk8FDBERERERERGxeypgiIiIiIiIiIjdUwFDREREREREROyeChgiIiIiIiIiYvdUwBARERERERERu6cChoiIiIiIiIjYPRUwRERERERERMTuqYAhIiIiIiIiInZPBQwRERERERERsXsqYIiIiIiIiIiI3VMBQ0RERERERETsngoYIiIiIiIiImL3VMAQEREREREREbunAoaIiIiIiIiI2D0VMERERERERETE7qmAISIiIiIiIiJ2TwUMEREREREREbF7KmCIiIiIiIiIiN1TAUNERERERERE7N5jV8D49swp+oS8kWP5rh3b6NapHd07d2DaOxNIT08nMTGBN3t0JaRze34++xMAJ785zrKIsIcc9f2Xnp7O5InjCO7QjpAuwURduJC57sbvvxPSJTjzX83qL/LJmlUkJiTQvWtngju04+xPPwJw4vjXLA5bZKvDuK++PX2KXiGd77nObDIR8kYHzp/7FYDExAT6dO9Ct+CgrL5x4jhLF4c+tHgfhPS0NObNnMjYAd0YP7gH165cuud2C2e/y4qwuQCYTYlMHNabt/t35cKvPwPw47cn2bR6ycMK+757qdxT7JrVEYByxZ9k7wfB7JsTzAf9G2M0GrJtazQaWDD0NfbNCWb37E6UKJQXgIYvleTzj7uwcrw/hoxdZvdrRDHfPA/1WGzl29On6HmP82nblk8JCmhJ9y6d2LRhHWA9n3p370LXu86nJQ5+Pv3hzOlThHQJzrH82zOn6dq5A12C2zN0UH+SkpJITEygR7fOdO6YlWe/OfE1EeGPRp4Fa3v07JazPbZv20KHQH+C2wewds0qwNo3eoW8QZdO7TL7xjePQN9IS0vjg2njGfbmG4zo242rly9mW3/syEEG9ezAkD6d2bllPQCmxERGD+jBkD6dOffLWQC+O/0N61ZEPPT476eXnivOrtABmZ9fr1uRJVO63HPbXoG1Obx8GJ9HDqVprecAKFwgL/uXDGZ3+ECeym/Nr0HNXqJt4xceeOy2lJqawrvjR9Gvxxv07tKeI4f2Z1v/xecH6PVGEG9268jWTX/k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2uyUa62UZ7NTrpX/lXJtFuXZLMq12TlKrtUMDLmnBQsWEBcXx7x58zLfRGs2m20dls00atSI77//no4dOxISEsLo0aNxc3OzdVhiYwEBAdy+fZv27dszaNAgpkyZoqm68o8o12anXCv3olwr/yvl2izKs/JnHCXXGiwWi8XWQYiIiIiIiIiI/BXNwBARERERERERu6cChoiIiIiIiIjYPRUwRERERERERMTuqYAhIiIiIiIiInZPBQwRERERERERsXtOEyZMmGDrIEQelGPHjtG2bVsOHjzIxo0bWb16NWazmeeff/4f/ZyZM2dy7do1ANasWUPVqlXvud3u3bvx9vbG29v7v/7MQ4cOMX/+fBo0aPCPYhERsSfKsyIiD55yrYiV/f1hV5H7rHr16syePRuA5ORkmjRpQsuWLcmdO/c//lnly5enfPnyf7p+2bJlTJgwAV9f338dr4iIo1GeFRF58JRrRVTAkMdMfHw8RqORLl26UKRIEeLi4li0aBETJkzgwoULpKenM3DgQKpVq8auXbuYP38++fLlIyUlhZIlS3Ls2DFWr17N7NmzWbt2LatWrSI9PZ369etToUIFfvjhB0aMGMHKlStZs2YNW7duxWAw0KxZMzp37swvv/zC6NGj8fDwwMPDgzx58ti6SURE7ivlWRGRB0+5Vh5XKmDII+/o0aMEBwdjMBhwcXFh7NixhIWF0aJFCxo2bMjKlSvx8fFhypQpxMbG0qlTJ7Zt28aMGTNYu3YtefPmpWfPntl+ZnR0NKGhoWzevBlXV1emTZvGSy+9RPny5ZkwYQJRUVFs376dlStXYjAY6NKlCzVr1mTOnDn079+fV155hUWLFvHrr7/aqFVERO4f5VkRkQdPuVZEBQx5DNw53e4PYWFhlChRAoCzZ89y/PhxTp8+DUBqaio3btzA29sbHx8fACpXrpxt/4sXL+Ln54e7uzsAo0ePzrb+7NmzXLlyhS5dugBw69YtoqKi+Pnnn6lYsSIAVapUUbIXkUeC8qyIyIOnXCuiv0IijzGDwQBAyZIlee2114iMjCQ0NJQmTZqQO3dubt++TUxMDABnzpzJtm+xYsX49ddfSU5OBqB///5cv34dg8GAxWKhZMmSlC5dmmXLlhEZGYm/vz9lypShZMmSfPPNNwB8++23D/FoRUQePuVZEZEHT7lWHieagSGPvaCgIMaMGUOnTp2Ij4+nQ4cOuLq6MnXqVEJCQsiTJw/OztlPlXz58tGjRw86deqEwWCgbt26+Pr6UrlyZYYPH87ixYupUaMG7du3Jzk5mYoVK+Lr68v48eMZNGgQ4eHh5MuXDzc3NxsdtYjIw6M8KyLy4CnXyuPAYLFYLLYOQkRERERERETkr+gREhERERERERGxeypgiIiIiIiIiIjdUwFDREREREREROyeChgiIiIiIiIiYvdUwBARERERERERu6cChoiIiIiIiIjYPRUwRERERERERMTu/T8Qlwrxne6xhQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1080x360 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(ncols=3, figsize=(15, 5), sharex=True, sharey=True)\n",
    "\n",
    "lgb_cm = confusion_matrix(y_true=y_test, y_pred=lgb_pred)\n",
    "sns.heatmap(pd.DataFrame(lgb_cm/np.sum(lgb_cm), index=stars, columns=stars),\n",
    "            annot=True, cmap='Blues', fmt='.1%', ax=axes[0], cbar=False)\n",
    "axes[0].set_title(f'Gradient Boosting: Accuracy {lgb_acc:.2%}')\n",
    "\n",
    "rf_cm = confusion_matrix(y_true=y_test, y_pred=rf_pred)\n",
    "sns.heatmap(pd.DataFrame(rf_cm/np.sum(rf_cm), index=stars, columns=stars),\n",
    "            annot=True, cmap='Blues', fmt='.1%', ax=axes[1], cbar=False)\n",
    "axes[1].set_title(f'Random Forest: Accuracy {rf_acc:.2%}')\n",
    "\n",
    "lr_cm = confusion_matrix(y_true=y_test, y_pred=lr_pred)\n",
    "sns.heatmap(pd.DataFrame(lr_cm/np.sum(lr_cm), index=stars, columns=stars),\n",
    "            annot=True, cmap='Blues', fmt='.1%', ax=axes[2], cbar=False)\n",
    "axes[2].set_title(f'Logistic Regression: Accuracy {lr_acc:.2%}')\n",
    "axes[0].set_ylabel('Actuals')\n",
    "for i in range(3):\n",
    "    axes[i].set_xlabel('Predicted')\n",
    "\n",
    "sns.despine()\n",
    "fig.tight_layout()\n",
    "fig.savefig(results_path / 'confusion_matrix', dpi=300)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": true,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
